package com.example.springboot_demo.controller;

import com.example.springboot_demo.entity.User;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import javax.servlet.http.HttpSession;


/**
 * @Author: zt
 * @Date: 2021/5/8 15:37
 * @Description:
 */
@Controller
@Slf4j
public class UserController {
    @GetMapping(value = {"/", "/login"})
    public String loginPage() {
        return "login";
    }

    // 默认是转发方式，每次刷新都会导致表单重复提交，调用此方法
    @PostMapping("/login")
    public String login(User user, HttpSession session, Model model) {
        if (StringUtils.isNotBlank(user.getUsername()) && StringUtils.equals("111", user.getPassword())) {
            // 把登录成功的用户保存起来
            session.setAttribute("loginUser", user);
            // 登录成功重定向到 home 页面
            return "redirect:/main.html";
        } else {
            model.addAttribute("msg", "用户名或密码错误");
            return "login";
        }

    }

    // 使用重定向方法解决 main 页面每次刷新都调用 login() 方法
    @GetMapping("main.html")
    public String mainPage(HttpSession session, Model model) {
        log.info("当前方法是：{}", "mainPage");

//        Object loginUser = session.getAttribute("loginUser");
//        if (loginUser != null) {
//            return "main";
//        } else {
//            model.addAttribute("msg", "请重新登录");
//            return "login";
//        }

        // 注掉上面的校验，因为登录拦截器已经做了。
        return "main";
    }
}
